$(function () {
    // 代表当前是第几页
    var currentPage = 1;
    // 代表每页获取多少条数据
    var pageSize = 10;
    /**
     * 封装好的生成分页按钮的函数
     * 
     * 分页的要素：（动态生成分页按钮）
     *      1：当前是第几页
     *      2：总共显示多少个按钮
     *      3：从第几页开始
     *      4：到第几页结束
     *      5：一共有多少页数据
     *      6：每一页显示多少条
     */
    function initPagination(dataCount) {
        var buttonCount = 5;
        // 需要从后台得到一共有多少条数据，才能计算出一共有多少页数据
        // 总共的页数：Math.ceil(数据的总条数 / pageSize)
        var pageCount = Math.ceil(dataCount / pageSize);

        // 根据当前是多少和总共显示多少，计算出最开始是几 和 结束是几
        var start = currentPage - (buttonCount - 1) / 2;
        // 如果开始的页面是第一页
        if (start <= 1) {
            start = 1;
        }
        var end = start + (buttonCount - 1);
        if (end >= pageCount) {
            end = pageCount;
            // 重新计算开始的页码
            start = end - (buttonCount - 1);
        }


        // 生成结构
        html = [];
        if (currentPage != 1) {
            html.push('<li pageIndex="' + (parseInt(currentPage) - 1) + '"><a href="#">上一页</a></li>');
        }
        for (var i = start; i <= end; i++) {
            if (i == currentPage) {
                html.push('<li pageIndex="' + i + '"><a href="#" style="background:#2F4050;color:#fff">' + i + '</a></li>');
            } else {
                html.push('<li pageIndex="' + i + '"><a href="#">' + i + '</a></li>');
            }

        }
        if (currentPage != pageCount) {
            html.push('<li pageIndex="' + (parseInt(currentPage) + 1) + '"><a href="#">下一页</a></li>');
        }
        $('.pagination').html(html.join(''));
    }

    /**
     * 1 先把所有的分类数据请求回来，生成分类的下拉结构
     * 2 根据分类的id和状态进行数据的请求
     * 3 在后台写接口
     */
    // 封装就要请求数据方法
    function getPostsData() {
        $.ajax({
            type: "post",
            //url：--- getPostByQuery.php
            url: "/admin/api/getAllPostsByQuery.php",
            data: {
                // 分页要的数据
                currentPage: currentPage,
                pageSize: pageSize,
                // 一开始  请求数据，，没有根据分类筛选
                // 需要开始后台这是一个不用筛选的请求
                // 前后约定好，传递什么，让后端不用筛选
                // 约定，传递一个all回来，就不用筛选
                // 需要在服务端，判断一下，category_id是否为all
                // 条件筛选要的数据
                category_id: $('#category').val(),
                status: $('#status').val()
            },
            dataType: "json",
            success: function (res) {
                if (res.code == 1) {
                    // 渲染数据
                    $('tbody').html(template('poststp', res.data));
                    // 此时才把分页的按钮动态生成
                    initPagination(res.dataCount);
                }
            }
        });
    }



    // 给页码的按钮注册点击事件
    $('.pagination').on('click', 'li', function () {
        //    从被点击的li上得到要请求的页码  当前页码
        var pageIndex = $(this).attr('pageIndex');
        // 修改当前页码
        currentPage = pageIndex;
        getPostsData();
    });


    // 先获取分类
    getCategory();
    // 先加载所有的分类(封装好的请求数据的方法)
    function getCategory() {
        $.ajax({
            type: 'post',
            url: '/admin/api/getAllCategories.php',
            dataType: 'json',
            success: function (res) {
                if (res.code == 1) {
                    // 生成分类的下拉框所需要的结构
                    var html = '<option value="all">所有分类</option>';
                    // 遍历数组，生成每一个分类的结构
                    for (var i = 0; i < res.data.length; i++) {
                        html += '<option value="' + res.data[i].id + '">' + res.data[i].name + '</option>';
                    }
                    // 把结构放到下拉框里面
                    $("#category").html(html);

                    getPostsData();
                }
            }
        });
    }


    // 这个地方的处理方式：可以给category_id一个初始值，还可以要求，一定要等分类数据回来之后，在获取文章数据

    // 点击筛选按钮
    $('#btn-get-data').on('click', function () {
        getPostsData();
    });


    // 删除数据
    $('tbody').on('click','.del', function () {
        // 获取id 在tr里有个id
        var id = $(this).parent().parent().
            attr('postid');
        // 发送请求
        if (confirm('你确定要删除这条数据吗？')) {
            // ajax请求
            $.ajax({
                type: 'post',
                url: '/admin/api/delPostsById.php',
                data: { id },
                dataType: 'json',
                success: function (res) {
                    console.log(res);
                    if (res.code == 1) { 
                        alert(res.msg);
                        location.reload();
                    }
                }
            });
        }
    });
});